'\" t
.\" Copyright (c) 1993 by Thomas Koenig (ig25@rz.uni-karlsruhe.de)
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
.\" Modified Sat Jul 24 19:51:06 1993 by Rik Faith (faith@cs.unc.edu)
.TH ctermid 3 2024-05-02 "Linux man-pages 6.9.1"
.SH NAME
ctermid \- get controlling terminal name
.SH LIBRARY
Standard C library
.RI ( libc ", " \-lc )
.SH SYNOPSIS
.nf
.B #include <stdio.h>
.\" POSIX also requires this function to be declared in <unistd.h>,
.\" and glibc does so if suitable feature test macros are defined.
.P
.BI "char *ctermid(char *" "s" );
.fi
.P
.RS -4
Feature Test Macro Requirements for glibc (see
.BR feature_test_macros (7)):
.RE
.P
.BR ctermid ():
.nf
    _POSIX_C_SOURCE
.fi
.SH DESCRIPTION
.BR ctermid ()
returns a string which is the pathname for the current
controlling terminal for this process.
If
.I s
is NULL,
a static buffer is used, otherwise
.I s
points to a buffer used to hold the terminal pathname.
The symbolic constant
.B L_ctermid
is the maximum number of characters in the returned pathname.
.SH RETURN VALUE
The pointer to the pathname.
.SH ATTRIBUTES
For an explanation of the terms used in this section, see
.BR attributes (7).
.TS
allbox;
lbx lb lb
l l l.
Interface	Attribute	Value
T{
.na
.nh
.BR ctermid ()
T}	Thread safety	MT-Safe
.TE
.SH STANDARDS
POSIX.1-2008.
.SH HISTORY
POSIX.1-2001, Svr4.
.SH BUGS
The returned pathname may not uniquely identify the controlling
terminal; it may, for example, be
.IR /dev/tty .
.P
It is not assured that the program can open the terminal.
.\" in glibc 2.3.x, x >= 4, the glibc headers threw an error
.\" if ctermid() was given an argument; fixed in glibc 2.4.
.SH SEE ALSO
.BR ttyname (3)
